1 using UnityEngine;
2 using
System.Collections;
3 using
System;
4 using
System.IO;
5 using
System.Runtime.Serialization.Formatters.Binary;
6
7 public
class PuzzleGameSaver : MonoBehaviour
8 {
9
10     
private GameData gameData;
11
12     
public bool[] candyPuzzleLevels;
13     
public bool[] transportPuzzleLevels;
14     
public bool[] shapePuzzleLevels;
15
16     
public int[] candyPuzzleLevelStars;
17     
public int[] transportPuzzleLevelStars;
18     
public int[] shapePuzzleLevelStars;
19
20     
private bool isGameStartedForTheFirstTime;
21
22     
public float musicVolume;
23
24     
void Awake()
25     {
26         InitializeGame();
27     }
28
29     
void InitializeGame()
30     {
31
32         LoadGameData();
33
34         
if (gameData != null)
35         {
36             isGameStartedForTheFirstTime = gameData.GetIsGameStartedForTheFirstTime();
37         }
38         
else
39         {
40             isGameStartedForTheFirstTime =
true;
41         }
42
43         
if (isGameStartedForTheFirstTime)
44         {
45
46             isGameStartedForTheFirstTime =
false;
47
48             musicVolume =
0;
49
50             candyPuzzleLevels =
new bool[5];
51             transportPuzzleLevels =
new bool[5];
52             shapePuzzleLevels =
new bool[5];
53
54             candyPuzzleLevels[
0] = true;
55             transportPuzzleLevels[
0] = true;
56             shapePuzzleLevels[
0] = true;
57
58             
for (int i = 1; i < candyPuzzleLevels.Length; i++)
59             {
60                 candyPuzzleLevels[i] =
false;
61                 transportPuzzleLevels[i] =
false;
62                 shapePuzzleLevels[i] =
false;
63             }
64
65             candyPuzzleLevelStars =
new int[5];
66             transportPuzzleLevelStars =
new int[5];
67             shapePuzzleLevelStars =
new int[5];
68
69             
for (int i = 0; i < candyPuzzleLevelStars.Length; i++)
70             {
71                 candyPuzzleLevelStars[i] =
0;
72                 transportPuzzleLevelStars[i] =
0;
73                 shapePuzzleLevelStars[i] =
0;
74             }
75
76             gameData =
new GameData();
77
78             gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
79             gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
80             gameData.SetShapePuzzleLevels(shapePuzzleLevels);
81
82             gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
83             gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
84             gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
85
86             gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
87             gameData.SetMusicVolume(musicVolume);
88
89             SaveGameData();
90             LoadGameData();
91
92
93         }
94
95     }
96
97     
public void SaveGameData()
98     {
99         FileStream file =
null;
100
101         
try
102         {
103
104             BinaryFormatter bf =
new BinaryFormatter();
105
106             file = File.Create(Application.persistentDataPath +
"/GameData.dat");
107
108             
if (gameData != null)
109             {
110
111                 gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
112                 gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
113                 gameData.SetShapePuzzleLevels(shapePuzzleLevels);
114
115                 gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
116                 gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
117                 gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
118
119                 gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
120                 gameData.SetMusicVolume(musicVolume);
121
122                 bf.Serialize(file, gameData);
123
124             }
125
126         }
127         
catch (Exception e)
128         {
129
130         }
131         
finally
132         {
133             
if (file != null)
134             {
135                 file.Close();
136             }
137         }
138     }
139
140     
void LoadGameData()
141     {
142         FileStream file =
null;
143
144         
try
145         {
146
147             BinaryFormatter bf =
new BinaryFormatter();
148
149             file = File.Open(Application.persistentDataPath +
"/GameData.dat", FileMode.Open);
150
151             gameData = (GameData)bf.Deserialize(file);
152
153             
if (gameData != null)
154             {
155
156                 candyPuzzleLevels = gameData.GetCandyPuzzleLevels();
157                 transportPuzzleLevels = gameData.GetTransportPuzzleLevels();
158                 shapePuzzleLevels = gameData.GetShapePuzzleLevels();
159
160                 candyPuzzleLevelStars = gameData.GetCandyPuzzleLevelStars();
161                 transportPuzzleLevelStars = gameData.GetTransportPuzzleLevelStars();
162                 shapePuzzleLevelStars = gameData.GetShapePuzzleLevelStars();
163
164                 musicVolume = gameData.GetMusicVolume();
165
166
167             }
168
169         }
170         
catch (Exception e)
171         {
172
173         }
174         
finally
175         {
176             
if (file != null)
177             {
178                 file.Close();
179             }
180         }
181
182     }
183
184     
public void Save(int level, string selectedPuzzle, int stars)
185     {
186
187         
int unlockNextLevel = -1;
188
189         
switch (selectedPuzzle)
190         {
191
192             
case "Candy Puzzle":
193
194                 unlockNextLevel = level +
1;
195
196                 candyPuzzleLevelStars[level] = stars;
197
198                 
if (unlockNextLevel < candyPuzzleLevels.Length)
199                 {
200                     candyPuzzleLevels[unlockNextLevel] =
true;
201                 }
202
203                 
break;
204
205             
case "Transport Puzzle":
206
207                 unlockNextLevel = level +
1;
208
209                 transportPuzzleLevelStars[level] = stars;
210
211                 
if (unlockNextLevel < transportPuzzleLevels.Length)
212                 {
213                     transportPuzzleLevels[unlockNextLevel] =
true;
214                 }
215
216                 
break;
217
218             
case "Shape Puzzle":
219
220                 unlockNextLevel = level +
1;
221                 shapePuzzleLevelStars[level] = stars;
222
223                 
if (unlockNextLevel < shapePuzzleLevels.Length)
224                 {
225                     shapePuzzleLevels[unlockNextLevel] =
true;
226                 }
227
228                 
break;
229
230
231         }
232
233     }
234
235
236
237
238 }
// PuzzleGameSaver



Full source code giải đố hình đơn giản 16.641 lượt xem

Gõ tìm kiếm nhanh...